package sv.gob.mtps.sib.model;

// Generated 09-28-2012 11:20:09 AM by Hibernate Tools 3.4.0.CR1

import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * Factura generated by hbm2java
 */
@Entity
@Table(name = "factura", schema = "sib")
public class Factura implements java.io.Serializable {

	private int idFactura;
	private Fuentefondo fuentefondo;
	private Proveedor proveedor;
	private Estadofactura estadofactura;
	private Date fechaFactura;
	private Date fechaRegistroFactura;
	private String numeroCompromiso;
	private String numeroFactura;
	private String numeroOrdencompra;
	private Set<FacturaHasProducto> facturaHasProductos = new HashSet<FacturaHasProducto>(
			0);

	public Factura() {
	}

	public Factura(int idFactura, Fuentefondo fuentefondo, Proveedor proveedor,
			Estadofactura estadofactura, Date fechaFactura,
			Date fechaRegistroFactura) {
		this.idFactura = idFactura;
		this.fuentefondo = fuentefondo;
		this.proveedor = proveedor;
		this.estadofactura = estadofactura;
		this.fechaFactura = fechaFactura;
		this.fechaRegistroFactura = fechaRegistroFactura;
	}

	public Factura(int idFactura, Fuentefondo fuentefondo, Proveedor proveedor,
			Estadofactura estadofactura, Date fechaFactura,
			Date fechaRegistroFactura, String numeroCompromiso,
			String numeroFactura, String numeroOrdencompra,
			Set<FacturaHasProducto> facturaHasProductos) {
		this.idFactura = idFactura;
		this.fuentefondo = fuentefondo;
		this.proveedor = proveedor;
		this.estadofactura = estadofactura;
		this.fechaFactura = fechaFactura;
		this.fechaRegistroFactura = fechaRegistroFactura;
		this.numeroCompromiso = numeroCompromiso;
		this.numeroFactura = numeroFactura;
		this.numeroOrdencompra = numeroOrdencompra;
		this.facturaHasProductos = facturaHasProductos;
	}

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name = "id_factura", unique = true, nullable = false)
	public int getIdFactura() {
		return this.idFactura;
	}

	public void setIdFactura(int idFactura) {
		this.idFactura = idFactura;
	}

	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "id_fuentefondo", nullable = false)
	public Fuentefondo getFuentefondo() {
		return this.fuentefondo;
	}

	public void setFuentefondo(Fuentefondo fuentefondo) {
		this.fuentefondo = fuentefondo;
	}

	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "id_proveedor", nullable = false)
	public Proveedor getProveedor() {
		return this.proveedor;
	}

	public void setProveedor(Proveedor proveedor) {
		this.proveedor = proveedor;
	}

	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "id_estadofactura", nullable = false)
	public Estadofactura getEstadofactura() {
		return this.estadofactura;
	}

	public void setEstadofactura(Estadofactura estadofactura) {
		this.estadofactura = estadofactura;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "fecha_factura", nullable = false, length = 13)
	public Date getFechaFactura() {
		return this.fechaFactura;
	}

	public void setFechaFactura(Date fechaFactura) {
		this.fechaFactura = fechaFactura;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "fecha_registro_factura", nullable = false, length = 13)
	public Date getFechaRegistroFactura() {
		return this.fechaRegistroFactura;
	}

	public void setFechaRegistroFactura(Date fechaRegistroFactura) {
		this.fechaRegistroFactura = fechaRegistroFactura;
	}

	@Column(name = "numero_compromiso", length = 50)
	public String getNumeroCompromiso() {
		return this.numeroCompromiso;
	}

	public void setNumeroCompromiso(String numeroCompromiso) {
		this.numeroCompromiso = numeroCompromiso;
	}

	@Column(name = "numero_factura", length = 50)
	public String getNumeroFactura() {
		return this.numeroFactura;
	}

	public void setNumeroFactura(String numeroFactura) {
		this.numeroFactura = numeroFactura;
	}

	@Column(name = "numero_ordencompra", length = 50)
	public String getNumeroOrdencompra() {
		return this.numeroOrdencompra;
	}

	public void setNumeroOrdencompra(String numeroOrdencompra) {
		this.numeroOrdencompra = numeroOrdencompra;
	}

	@OneToMany(fetch = FetchType.EAGER, mappedBy = "factura")
	public Set<FacturaHasProducto> getFacturaHasProductos() {
		return this.facturaHasProductos;
	}

	public void setFacturaHasProductos(
			Set<FacturaHasProducto> facturaHasProductos) {
		this.facturaHasProductos = facturaHasProductos;
	}

}
